// #include <stdio.h> //后面是没有分号  通常以#作为开头
// #include <stdlib.h>
//
// //宏替换
// // #define MAX 100 //用100替换MAX 用max 替换100
//
// //宏魔法的说法 可以给任何东西做替换
// #define  PI 3.1415926
// #define 整数 int
//
// // #define 主函数  int main;
// //
// // #define 开始 {
// // #define 结束 }
//
//
// // 主函数() {}
//
// //宏函数
// //也是一种替换 一种特殊的替换 带参数的替换
// #define MAX(a,b) ((a)>(b)?(a):(b))
// //宏函数可以忽略类型
//
// //不带括号的宏 小心使用
// #define M(a) a+a
// #define M2(a) ((a)+(a))
//
// //多行宏 不要用空格 可以用tab键 \是连接符
// #define print_value(data)\
// if(data%2==0){          \
//     printf("偶数\n");     \
// }else                   \
// {                       \
//     printf("奇数\n");     \
// }                           \
// //带do_while(0)的宏 在宏里面 定义了变量 可能和你的定义的变量冲突 do_while(0)可以解决这个问题
// //do_while(0)  0是假 会执行一次 限制了作用域
// #define test int nub=0;
//
// //系统自带宏
// void test_func()
// {
//     //文件路径
//     printf("文件url%s\n",__FILE__);
//     //当前代码的行号
//     printf("当前代码的行号%d\n",__LINE__);
//     //日期
//     printf("日期%s\n",__DATE__);
//     //时间
//     printf("时间%s\n",__TIME__);
//
//     int nub = 0;
//     scanf("%d",&nub);
//
// }
//
//
// int main() {
//     printf("hello world\n");
//     // printf("%d\n",MAX);
//
//     // int num = 0;
//     // 整数 num2 = 0;
//
//     int a = MAX(10,20);
//     printf("%d\n",a);
//     printf("%lf\n",MAX(3.14,2.14));
//     printf("%c\n",MAX('a','b'));
//
//     int result = M(1+2) *4; //没有括号 单纯的替换
//     //1+2+1+2 *4
//     printf("%d\n",result); //12
//
//     int result2 = M2(1+2) *4; //有括号
//     printf("%d\n",result2); //24
//     print_value(10);
//
//     test;
//     printf("%d\n",nub);
//     test_func();
//
//
//
//
//
//     return 0;
// }